//
// Created by wangyg98 on 2025/4/28.
//

#ifndef TEYVATSURVIVOR_RESOURCEMANAGER_H
#define TEYVATSURVIVOR_RESOURCEMANAGER_H

#include <graphics.h> // 包含IMAGE定义
#include <vector>
#include <memory>
#include <string>
#include <unordered_map>

class ResourceManager{
public:
    // 禁用拷贝和赋值
    ResourceManager(const ResourceManager&) = delete;
    ResourceManager& operator=(const ResourceManager&) = delete;

    // 加载资源
    static void LoadResources(const std::string& path, int num, const std::string& character_type);

    // 获取资源
    static const std::vector<std::unique_ptr<IMAGE>>& GetFramesLeft(const std::string& characterType);
    static const std::vector<std::unique_ptr<IMAGE>>& GetFramesRight(const std::string& characterType);

    // 清理特定类型资源
    static void ClearResources(const std::string& characterType);

    // 清理所有资源
    static void ClearAllResources();
private:
    ResourceManager() = default; // 私有构造函数

    // 资源存储结构
    struct CharacterResources {
        std::vector<std::unique_ptr<IMAGE>> framesLeft;
        std::vector<std::unique_ptr<IMAGE>> framesRight;
        bool loaded = false;
    };

    // 静态资源存储
    static std::unordered_map<std::string, CharacterResources> resources;
};

#endif //TEYVATSURVIVOR_RESOURCEMANAGER_H
